/**
 * Copyright(c)2012 Beijing PeaceMap Co.,Ltd.
 * All right reserved. 
 */
package com.pmc.dwa.common.dao;

import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import com.pmc.dwa.common.utils.PaginationSupport;

/**
 * @description 通用基础Dao接口
 * @author aokunsang
 * @date 2013-1-5
 */
public interface IGenericDao {

	//JdbcTemplate
	public JdbcTemplate getJdbcTemplate();
	//namedParameterJdbcTemplate
	public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate();
	//单个添加、更新
	public <T> void saveOrUpdate(String sql,T bean);
	//更新、删除、（或者也可以新增）
	public int update(String sql,Object... args);
	//统计
	public long stat(String sql,Object... args);
	//查询
	public <T> T find(String sql,Class<T> clazz,Object... args);
	//查询列表
	public <T> List<T> query(String sql,Class<T> clazz,Object... args);
	//批量添加、更新
	public <T> void batchUpdate(String sql,List<T> batchObjs);
	//批量添加、更新
	public void batchOpeate(String sql,List<Object[]> batchArgs);
	
	public Map<String,Object> findMap(String sql,Object... args);
	public List<Map<String,Object>> queryMapList(String sql,Object... args);
	
	/** 
	 * 分页查询【提示：尽量包含order by(下同)】
	 * @param <T>
	 * @param sql
	 * @param pageNumber  当前页码
	 * @param pageSize    每页显示条数
	 * @return
	 */
	public <T> PaginationSupport<T> queryListByRows(String sql,Class<T> clazz,int pageNumber,int pageSize,Object... args);
	public PaginationSupport<Map<String,Object>> queryMaplistByRows(String sql,int pageNumber,int pageSize,Object... args);
}
